
type file = File of string * modulo list 
and modulo = Mod of string * def_modulo list
	     | Empty_mod of string
and def_modulo = Tipo of string * def_tipo 
		 | Func of string * def_funz
		 | Exc of string 
		 | PExc of string * string
		 | SMod of modulo
and def_tipo = Type of simpl_type 
	       | CType of string
	       | NType of string * simpl_type
         | MCType of def_tipo list
         | MULType of def_tipo * def_modulo
	       
and simpl_type = string 
and def_funz = TFunz of string
;;

type qname = NAME of string
          | QNAME of string * qname
and aparams = APARAMS of type_comma_ne_list
	      | TYPE of stype list
and type_comma_ne_list = TYPE_COMMA_LIST of type_t list
and type_t = TYPE of stype list
and type_star_ne_list = TYPE_STAR_NE_LIST of stype list
and stype = TVAR of string 
          | APA_QNAME of aparams * qname
          | FUNC_APPL of type_t * type_t
	  | TYPE od
;;

type type_body = TYPE of type_t
		 | EMPTY_BODY
		 | CONSTR
		 | FIELD_LIST
and type_t = TUPLE of type_star
and type_star = stype list
and stype = TVAR of string
	    | APARAM_QNAME of aparams * qname
	    | FUNC_APPL of type_t * type_t 
	    | TYPE of type_t
and aparams = type_t list
and qname = NAME of string
	    | QNAME of string * qname
;;
